(0) Obligation:

Clauses:

append(nil, XS, XS).
append(cons(X, XS1), XS2, cons(X, YS)) :- append(XS1, XS2, YS).
split(XS, nil, XS).
split(cons(X, XS), cons(X, YS1), YS2) :- split(XS, YS1, YS2).
perm(nil, nil).
perm(XS, cons(Y, YS)) :- ','(split(XS, YS1, cons(Y, YS2)), ','(append(YS1, YS2, ZS), perm(ZS, YS))).

Query: perm(g,a)

(1) PrologToPrologProblemTransformerProof (SOUND transformation)

Built Prolog problem from termination graph ICLP10.

(2) Obligation:

Clauses:

splitA(cons(T80, T81), nil, T80, T81).
splitA(cons(T88, T89), cons(T88, X83), T91, X84) :- splitA(T89, X83, T91, X84).
appendB(nil, T116, T116).
appendB(cons(T123, T124), T125, cons(T123, X130)) :- appendB(T124, T125, X130).
appendC(T40, T40).
appendD(T107, T108, T109, cons(T107, X108)) :- appendB(T108, T109, X108).
permE(nil, nil).
permE(cons(T30, T31), cons(T30, T32)) :- appendC(T31, X23).
permE(cons(T30, T31), cons(T30, T32)) :- ','(appendC(T31, T34), permE(T34, T32)).
permE(cons(T47, T48), cons(T50, T51)) :- splitA(T48, X56, T50, X57).
permE(cons(T47, T48), cons(T50, T60)) :- ','(splitA(T48, T58, T50, T59), appendD(T47, T58, T59, X23)).
permE(cons(T47, T48), cons(T50, T60)) :- ','(splitA(T48, T58, T50, T59), ','(appendD(T47, T58, T59, T98), permE(T98, T60))).

Query: permE(g,a)

(3) PrologToPiTRSProof (SOUND transformation)

We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes:
permE_in: (b,f)
splitA_in: (b,f,f,f)
appendD_in: (b,b,b,f)
appendB_in: (b,b,f)
Transforming Prolog into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:

permE_in_ga(nil, nil) → permE_out_ga(nil, nil)
permE_in_ga(cons(T30, T31), cons(T30, T32)) → U4_ga(T30, T31, T32, appendC_in_ga(T31, X23))
appendC_in_ga(T40, T40) → appendC_out_ga(T40, T40)
U4_ga(T30, T31, T32, appendC_out_ga(T31, X23)) → permE_out_ga(cons(T30, T31), cons(T30, T32))
permE_in_ga(cons(T30, T31), cons(T30, T32)) → U5_ga(T30, T31, T32, appendC_in_ga(T31, T34))
U5_ga(T30, T31, T32, appendC_out_ga(T31, T34)) → U6_ga(T30, T31, T32, permE_in_ga(T34, T32))
permE_in_ga(cons(T47, T48), cons(T50, T51)) → U7_ga(T47, T48, T50, T51, splitA_in_gaaa(T48, X56, T50, X57))
splitA_in_gaaa(cons(T80, T81), nil, T80, T81) → splitA_out_gaaa(cons(T80, T81), nil, T80, T81)
splitA_in_gaaa(cons(T88, T89), cons(T88, X83), T91, X84) → U1_gaaa(T88, T89, X83, T91, X84, splitA_in_gaaa(T89, X83, T91, X84))
U1_gaaa(T88, T89, X83, T91, X84, splitA_out_gaaa(T89, X83, T91, X84)) → splitA_out_gaaa(cons(T88, T89), cons(T88, X83), T91, X84)
U7_ga(T47, T48, T50, T51, splitA_out_gaaa(T48, X56, T50, X57)) → permE_out_ga(cons(T47, T48), cons(T50, T51))
permE_in_ga(cons(T47, T48), cons(T50, T60)) → U8_ga(T47, T48, T50, T60, splitA_in_gaaa(T48, T58, T50, T59))
U8_ga(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U9_ga(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, X23))
appendD_in_ggga(T107, T108, T109, cons(T107, X108)) → U3_ggga(T107, T108, T109, X108, appendB_in_gga(T108, T109, X108))
appendB_in_gga(nil, T116, T116) → appendB_out_gga(nil, T116, T116)
appendB_in_gga(cons(T123, T124), T125, cons(T123, X130)) → U2_gga(T123, T124, T125, X130, appendB_in_gga(T124, T125, X130))
U2_gga(T123, T124, T125, X130, appendB_out_gga(T124, T125, X130)) → appendB_out_gga(cons(T123, T124), T125, cons(T123, X130))
U3_ggga(T107, T108, T109, X108, appendB_out_gga(T108, T109, X108)) → appendD_out_ggga(T107, T108, T109, cons(T107, X108))
U9_ga(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, X23)) → permE_out_ga(cons(T47, T48), cons(T50, T60))
U8_ga(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U10_ga(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, T98))
U10_ga(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, T98)) → U11_ga(T47, T48, T50, T60, permE_in_ga(T98, T60))
U11_ga(T47, T48, T50, T60, permE_out_ga(T98, T60)) → permE_out_ga(cons(T47, T48), cons(T50, T60))
U6_ga(T30, T31, T32, permE_out_ga(T34, T32)) → permE_out_ga(cons(T30, T31), cons(T30, T32))

The argument filtering Pi contains the following mapping:
permE_in_ga(x1, x2)  =  permE_in_ga(x1)
nil  =  nil
permE_out_ga(x1, x2)  =  permE_out_ga
cons(x1, x2)  =  cons(x1, x2)
U4_ga(x1, x2, x3, x4)  =  U4_ga(x4)
appendC_in_ga(x1, x2)  =  appendC_in_ga(x1)
appendC_out_ga(x1, x2)  =  appendC_out_ga(x2)
U5_ga(x1, x2, x3, x4)  =  U5_ga(x4)
U6_ga(x1, x2, x3, x4)  =  U6_ga(x4)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
splitA_in_gaaa(x1, x2, x3, x4)  =  splitA_in_gaaa(x1)
splitA_out_gaaa(x1, x2, x3, x4)  =  splitA_out_gaaa(x2, x3, x4)
U1_gaaa(x1, x2, x3, x4, x5, x6)  =  U1_gaaa(x1, x6)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x1, x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x5)
appendD_in_ggga(x1, x2, x3, x4)  =  appendD_in_ggga(x1, x2, x3)
U3_ggga(x1, x2, x3, x4, x5)  =  U3_ggga(x1, x5)
appendB_in_gga(x1, x2, x3)  =  appendB_in_gga(x1, x2)
appendB_out_gga(x1, x2, x3)  =  appendB_out_gga(x3)
U2_gga(x1, x2, x3, x4, x5)  =  U2_gga(x1, x5)
appendD_out_ggga(x1, x2, x3, x4)  =  appendD_out_ggga(x4)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x5)
U11_ga(x1, x2, x3, x4, x5)  =  U11_ga(x5)

Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog

(4) Obligation:

Pi-finite rewrite system:
The TRS R consists of the following rules:

permE_in_ga(nil, nil) → permE_out_ga(nil, nil)
permE_in_ga(cons(T30, T31), cons(T30, T32)) → U4_ga(T30, T31, T32, appendC_in_ga(T31, X23))
appendC_in_ga(T40, T40) → appendC_out_ga(T40, T40)
U4_ga(T30, T31, T32, appendC_out_ga(T31, X23)) → permE_out_ga(cons(T30, T31), cons(T30, T32))
permE_in_ga(cons(T30, T31), cons(T30, T32)) → U5_ga(T30, T31, T32, appendC_in_ga(T31, T34))
U5_ga(T30, T31, T32, appendC_out_ga(T31, T34)) → U6_ga(T30, T31, T32, permE_in_ga(T34, T32))
permE_in_ga(cons(T47, T48), cons(T50, T51)) → U7_ga(T47, T48, T50, T51, splitA_in_gaaa(T48, X56, T50, X57))
splitA_in_gaaa(cons(T80, T81), nil, T80, T81) → splitA_out_gaaa(cons(T80, T81), nil, T80, T81)
splitA_in_gaaa(cons(T88, T89), cons(T88, X83), T91, X84) → U1_gaaa(T88, T89, X83, T91, X84, splitA_in_gaaa(T89, X83, T91, X84))
U1_gaaa(T88, T89, X83, T91, X84, splitA_out_gaaa(T89, X83, T91, X84)) → splitA_out_gaaa(cons(T88, T89), cons(T88, X83), T91, X84)
U7_ga(T47, T48, T50, T51, splitA_out_gaaa(T48, X56, T50, X57)) → permE_out_ga(cons(T47, T48), cons(T50, T51))
permE_in_ga(cons(T47, T48), cons(T50, T60)) → U8_ga(T47, T48, T50, T60, splitA_in_gaaa(T48, T58, T50, T59))
U8_ga(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U9_ga(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, X23))
appendD_in_ggga(T107, T108, T109, cons(T107, X108)) → U3_ggga(T107, T108, T109, X108, appendB_in_gga(T108, T109, X108))
appendB_in_gga(nil, T116, T116) → appendB_out_gga(nil, T116, T116)
appendB_in_gga(cons(T123, T124), T125, cons(T123, X130)) → U2_gga(T123, T124, T125, X130, appendB_in_gga(T124, T125, X130))
U2_gga(T123, T124, T125, X130, appendB_out_gga(T124, T125, X130)) → appendB_out_gga(cons(T123, T124), T125, cons(T123, X130))
U3_ggga(T107, T108, T109, X108, appendB_out_gga(T108, T109, X108)) → appendD_out_ggga(T107, T108, T109, cons(T107, X108))
U9_ga(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, X23)) → permE_out_ga(cons(T47, T48), cons(T50, T60))
U8_ga(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U10_ga(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, T98))
U10_ga(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, T98)) → U11_ga(T47, T48, T50, T60, permE_in_ga(T98, T60))
U11_ga(T47, T48, T50, T60, permE_out_ga(T98, T60)) → permE_out_ga(cons(T47, T48), cons(T50, T60))
U6_ga(T30, T31, T32, permE_out_ga(T34, T32)) → permE_out_ga(cons(T30, T31), cons(T30, T32))

The argument filtering Pi contains the following mapping:
permE_in_ga(x1, x2)  =  permE_in_ga(x1)
nil  =  nil
permE_out_ga(x1, x2)  =  permE_out_ga
cons(x1, x2)  =  cons(x1, x2)
U4_ga(x1, x2, x3, x4)  =  U4_ga(x4)
appendC_in_ga(x1, x2)  =  appendC_in_ga(x1)
appendC_out_ga(x1, x2)  =  appendC_out_ga(x2)
U5_ga(x1, x2, x3, x4)  =  U5_ga(x4)
U6_ga(x1, x2, x3, x4)  =  U6_ga(x4)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
splitA_in_gaaa(x1, x2, x3, x4)  =  splitA_in_gaaa(x1)
splitA_out_gaaa(x1, x2, x3, x4)  =  splitA_out_gaaa(x2, x3, x4)
U1_gaaa(x1, x2, x3, x4, x5, x6)  =  U1_gaaa(x1, x6)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x1, x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x5)
appendD_in_ggga(x1, x2, x3, x4)  =  appendD_in_ggga(x1, x2, x3)
U3_ggga(x1, x2, x3, x4, x5)  =  U3_ggga(x1, x5)
appendB_in_gga(x1, x2, x3)  =  appendB_in_gga(x1, x2)
appendB_out_gga(x1, x2, x3)  =  appendB_out_gga(x3)
U2_gga(x1, x2, x3, x4, x5)  =  U2_gga(x1, x5)
appendD_out_ggga(x1, x2, x3, x4)  =  appendD_out_ggga(x4)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x5)
U11_ga(x1, x2, x3, x4, x5)  =  U11_ga(x5)

(5) DependencyPairsProof (EQUIVALENT transformation)

Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem:
Pi DP problem:
The TRS P consists of the following rules:

PERME_IN_GA(cons(T30, T31), cons(T30, T32)) → U4_GA(T30, T31, T32, appendC_in_ga(T31, X23))
PERME_IN_GA(cons(T30, T31), cons(T30, T32)) → APPENDC_IN_GA(T31, X23)
PERME_IN_GA(cons(T30, T31), cons(T30, T32)) → U5_GA(T30, T31, T32, appendC_in_ga(T31, T34))
U5_GA(T30, T31, T32, appendC_out_ga(T31, T34)) → U6_GA(T30, T31, T32, permE_in_ga(T34, T32))
U5_GA(T30, T31, T32, appendC_out_ga(T31, T34)) → PERME_IN_GA(T34, T32)
PERME_IN_GA(cons(T47, T48), cons(T50, T51)) → U7_GA(T47, T48, T50, T51, splitA_in_gaaa(T48, X56, T50, X57))
PERME_IN_GA(cons(T47, T48), cons(T50, T51)) → SPLITA_IN_GAAA(T48, X56, T50, X57)
SPLITA_IN_GAAA(cons(T88, T89), cons(T88, X83), T91, X84) → U1_GAAA(T88, T89, X83, T91, X84, splitA_in_gaaa(T89, X83, T91, X84))
SPLITA_IN_GAAA(cons(T88, T89), cons(T88, X83), T91, X84) → SPLITA_IN_GAAA(T89, X83, T91, X84)
PERME_IN_GA(cons(T47, T48), cons(T50, T60)) → U8_GA(T47, T48, T50, T60, splitA_in_gaaa(T48, T58, T50, T59))
U8_GA(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U9_GA(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, X23))
U8_GA(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → APPENDD_IN_GGGA(T47, T58, T59, X23)
APPENDD_IN_GGGA(T107, T108, T109, cons(T107, X108)) → U3_GGGA(T107, T108, T109, X108, appendB_in_gga(T108, T109, X108))
APPENDD_IN_GGGA(T107, T108, T109, cons(T107, X108)) → APPENDB_IN_GGA(T108, T109, X108)
APPENDB_IN_GGA(cons(T123, T124), T125, cons(T123, X130)) → U2_GGA(T123, T124, T125, X130, appendB_in_gga(T124, T125, X130))
APPENDB_IN_GGA(cons(T123, T124), T125, cons(T123, X130)) → APPENDB_IN_GGA(T124, T125, X130)
U8_GA(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U10_GA(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, T98))
U10_GA(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, T98)) → U11_GA(T47, T48, T50, T60, permE_in_ga(T98, T60))
U10_GA(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, T98)) → PERME_IN_GA(T98, T60)

The TRS R consists of the following rules:

permE_in_ga(nil, nil) → permE_out_ga(nil, nil)
permE_in_ga(cons(T30, T31), cons(T30, T32)) → U4_ga(T30, T31, T32, appendC_in_ga(T31, X23))
appendC_in_ga(T40, T40) → appendC_out_ga(T40, T40)
U4_ga(T30, T31, T32, appendC_out_ga(T31, X23)) → permE_out_ga(cons(T30, T31), cons(T30, T32))
permE_in_ga(cons(T30, T31), cons(T30, T32)) → U5_ga(T30, T31, T32, appendC_in_ga(T31, T34))
U5_ga(T30, T31, T32, appendC_out_ga(T31, T34)) → U6_ga(T30, T31, T32, permE_in_ga(T34, T32))
permE_in_ga(cons(T47, T48), cons(T50, T51)) → U7_ga(T47, T48, T50, T51, splitA_in_gaaa(T48, X56, T50, X57))
splitA_in_gaaa(cons(T80, T81), nil, T80, T81) → splitA_out_gaaa(cons(T80, T81), nil, T80, T81)
splitA_in_gaaa(cons(T88, T89), cons(T88, X83), T91, X84) → U1_gaaa(T88, T89, X83, T91, X84, splitA_in_gaaa(T89, X83, T91, X84))
U1_gaaa(T88, T89, X83, T91, X84, splitA_out_gaaa(T89, X83, T91, X84)) → splitA_out_gaaa(cons(T88, T89), cons(T88, X83), T91, X84)
U7_ga(T47, T48, T50, T51, splitA_out_gaaa(T48, X56, T50, X57)) → permE_out_ga(cons(T47, T48), cons(T50, T51))
permE_in_ga(cons(T47, T48), cons(T50, T60)) → U8_ga(T47, T48, T50, T60, splitA_in_gaaa(T48, T58, T50, T59))
U8_ga(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U9_ga(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, X23))
appendD_in_ggga(T107, T108, T109, cons(T107, X108)) → U3_ggga(T107, T108, T109, X108, appendB_in_gga(T108, T109, X108))
appendB_in_gga(nil, T116, T116) → appendB_out_gga(nil, T116, T116)
appendB_in_gga(cons(T123, T124), T125, cons(T123, X130)) → U2_gga(T123, T124, T125, X130, appendB_in_gga(T124, T125, X130))
U2_gga(T123, T124, T125, X130, appendB_out_gga(T124, T125, X130)) → appendB_out_gga(cons(T123, T124), T125, cons(T123, X130))
U3_ggga(T107, T108, T109, X108, appendB_out_gga(T108, T109, X108)) → appendD_out_ggga(T107, T108, T109, cons(T107, X108))
U9_ga(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, X23)) → permE_out_ga(cons(T47, T48), cons(T50, T60))
U8_ga(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U10_ga(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, T98))
U10_ga(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, T98)) → U11_ga(T47, T48, T50, T60, permE_in_ga(T98, T60))
U11_ga(T47, T48, T50, T60, permE_out_ga(T98, T60)) → permE_out_ga(cons(T47, T48), cons(T50, T60))
U6_ga(T30, T31, T32, permE_out_ga(T34, T32)) → permE_out_ga(cons(T30, T31), cons(T30, T32))

The argument filtering Pi contains the following mapping:
permE_in_ga(x1, x2)  =  permE_in_ga(x1)
nil  =  nil
permE_out_ga(x1, x2)  =  permE_out_ga
cons(x1, x2)  =  cons(x1, x2)
U4_ga(x1, x2, x3, x4)  =  U4_ga(x4)
appendC_in_ga(x1, x2)  =  appendC_in_ga(x1)
appendC_out_ga(x1, x2)  =  appendC_out_ga(x2)
U5_ga(x1, x2, x3, x4)  =  U5_ga(x4)
U6_ga(x1, x2, x3, x4)  =  U6_ga(x4)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
splitA_in_gaaa(x1, x2, x3, x4)  =  splitA_in_gaaa(x1)
splitA_out_gaaa(x1, x2, x3, x4)  =  splitA_out_gaaa(x2, x3, x4)
U1_gaaa(x1, x2, x3, x4, x5, x6)  =  U1_gaaa(x1, x6)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x1, x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x5)
appendD_in_ggga(x1, x2, x3, x4)  =  appendD_in_ggga(x1, x2, x3)
U3_ggga(x1, x2, x3, x4, x5)  =  U3_ggga(x1, x5)
appendB_in_gga(x1, x2, x3)  =  appendB_in_gga(x1, x2)
appendB_out_gga(x1, x2, x3)  =  appendB_out_gga(x3)
U2_gga(x1, x2, x3, x4, x5)  =  U2_gga(x1, x5)
appendD_out_ggga(x1, x2, x3, x4)  =  appendD_out_ggga(x4)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x5)
U11_ga(x1, x2, x3, x4, x5)  =  U11_ga(x5)
PERME_IN_GA(x1, x2)  =  PERME_IN_GA(x1)
U4_GA(x1, x2, x3, x4)  =  U4_GA(x4)
APPENDC_IN_GA(x1, x2)  =  APPENDC_IN_GA(x1)
U5_GA(x1, x2, x3, x4)  =  U5_GA(x4)
U6_GA(x1, x2, x3, x4)  =  U6_GA(x4)
U7_GA(x1, x2, x3, x4, x5)  =  U7_GA(x5)
SPLITA_IN_GAAA(x1, x2, x3, x4)  =  SPLITA_IN_GAAA(x1)
U1_GAAA(x1, x2, x3, x4, x5, x6)  =  U1_GAAA(x1, x6)
U8_GA(x1, x2, x3, x4, x5)  =  U8_GA(x1, x5)
U9_GA(x1, x2, x3, x4, x5)  =  U9_GA(x5)
APPENDD_IN_GGGA(x1, x2, x3, x4)  =  APPENDD_IN_GGGA(x1, x2, x3)
U3_GGGA(x1, x2, x3, x4, x5)  =  U3_GGGA(x1, x5)
APPENDB_IN_GGA(x1, x2, x3)  =  APPENDB_IN_GGA(x1, x2)
U2_GGA(x1, x2, x3, x4, x5)  =  U2_GGA(x1, x5)
U10_GA(x1, x2, x3, x4, x5)  =  U10_GA(x5)
U11_GA(x1, x2, x3, x4, x5)  =  U11_GA(x5)

We have to consider all (P,R,Pi)-chains

(6) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

PERME_IN_GA(cons(T30, T31), cons(T30, T32)) → U4_GA(T30, T31, T32, appendC_in_ga(T31, X23))
PERME_IN_GA(cons(T30, T31), cons(T30, T32)) → APPENDC_IN_GA(T31, X23)
PERME_IN_GA(cons(T30, T31), cons(T30, T32)) → U5_GA(T30, T31, T32, appendC_in_ga(T31, T34))
U5_GA(T30, T31, T32, appendC_out_ga(T31, T34)) → U6_GA(T30, T31, T32, permE_in_ga(T34, T32))
U5_GA(T30, T31, T32, appendC_out_ga(T31, T34)) → PERME_IN_GA(T34, T32)
PERME_IN_GA(cons(T47, T48), cons(T50, T51)) → U7_GA(T47, T48, T50, T51, splitA_in_gaaa(T48, X56, T50, X57))
PERME_IN_GA(cons(T47, T48), cons(T50, T51)) → SPLITA_IN_GAAA(T48, X56, T50, X57)
SPLITA_IN_GAAA(cons(T88, T89), cons(T88, X83), T91, X84) → U1_GAAA(T88, T89, X83, T91, X84, splitA_in_gaaa(T89, X83, T91, X84))
SPLITA_IN_GAAA(cons(T88, T89), cons(T88, X83), T91, X84) → SPLITA_IN_GAAA(T89, X83, T91, X84)
PERME_IN_GA(cons(T47, T48), cons(T50, T60)) → U8_GA(T47, T48, T50, T60, splitA_in_gaaa(T48, T58, T50, T59))
U8_GA(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U9_GA(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, X23))
U8_GA(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → APPENDD_IN_GGGA(T47, T58, T59, X23)
APPENDD_IN_GGGA(T107, T108, T109, cons(T107, X108)) → U3_GGGA(T107, T108, T109, X108, appendB_in_gga(T108, T109, X108))
APPENDD_IN_GGGA(T107, T108, T109, cons(T107, X108)) → APPENDB_IN_GGA(T108, T109, X108)
APPENDB_IN_GGA(cons(T123, T124), T125, cons(T123, X130)) → U2_GGA(T123, T124, T125, X130, appendB_in_gga(T124, T125, X130))
APPENDB_IN_GGA(cons(T123, T124), T125, cons(T123, X130)) → APPENDB_IN_GGA(T124, T125, X130)
U8_GA(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U10_GA(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, T98))
U10_GA(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, T98)) → U11_GA(T47, T48, T50, T60, permE_in_ga(T98, T60))
U10_GA(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, T98)) → PERME_IN_GA(T98, T60)

The TRS R consists of the following rules:

permE_in_ga(nil, nil) → permE_out_ga(nil, nil)
permE_in_ga(cons(T30, T31), cons(T30, T32)) → U4_ga(T30, T31, T32, appendC_in_ga(T31, X23))
appendC_in_ga(T40, T40) → appendC_out_ga(T40, T40)
U4_ga(T30, T31, T32, appendC_out_ga(T31, X23)) → permE_out_ga(cons(T30, T31), cons(T30, T32))
permE_in_ga(cons(T30, T31), cons(T30, T32)) → U5_ga(T30, T31, T32, appendC_in_ga(T31, T34))
U5_ga(T30, T31, T32, appendC_out_ga(T31, T34)) → U6_ga(T30, T31, T32, permE_in_ga(T34, T32))
permE_in_ga(cons(T47, T48), cons(T50, T51)) → U7_ga(T47, T48, T50, T51, splitA_in_gaaa(T48, X56, T50, X57))
splitA_in_gaaa(cons(T80, T81), nil, T80, T81) → splitA_out_gaaa(cons(T80, T81), nil, T80, T81)
splitA_in_gaaa(cons(T88, T89), cons(T88, X83), T91, X84) → U1_gaaa(T88, T89, X83, T91, X84, splitA_in_gaaa(T89, X83, T91, X84))
U1_gaaa(T88, T89, X83, T91, X84, splitA_out_gaaa(T89, X83, T91, X84)) → splitA_out_gaaa(cons(T88, T89), cons(T88, X83), T91, X84)
U7_ga(T47, T48, T50, T51, splitA_out_gaaa(T48, X56, T50, X57)) → permE_out_ga(cons(T47, T48), cons(T50, T51))
permE_in_ga(cons(T47, T48), cons(T50, T60)) → U8_ga(T47, T48, T50, T60, splitA_in_gaaa(T48, T58, T50, T59))
U8_ga(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U9_ga(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, X23))
appendD_in_ggga(T107, T108, T109, cons(T107, X108)) → U3_ggga(T107, T108, T109, X108, appendB_in_gga(T108, T109, X108))
appendB_in_gga(nil, T116, T116) → appendB_out_gga(nil, T116, T116)
appendB_in_gga(cons(T123, T124), T125, cons(T123, X130)) → U2_gga(T123, T124, T125, X130, appendB_in_gga(T124, T125, X130))
U2_gga(T123, T124, T125, X130, appendB_out_gga(T124, T125, X130)) → appendB_out_gga(cons(T123, T124), T125, cons(T123, X130))
U3_ggga(T107, T108, T109, X108, appendB_out_gga(T108, T109, X108)) → appendD_out_ggga(T107, T108, T109, cons(T107, X108))
U9_ga(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, X23)) → permE_out_ga(cons(T47, T48), cons(T50, T60))
U8_ga(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U10_ga(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, T98))
U10_ga(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, T98)) → U11_ga(T47, T48, T50, T60, permE_in_ga(T98, T60))
U11_ga(T47, T48, T50, T60, permE_out_ga(T98, T60)) → permE_out_ga(cons(T47, T48), cons(T50, T60))
U6_ga(T30, T31, T32, permE_out_ga(T34, T32)) → permE_out_ga(cons(T30, T31), cons(T30, T32))

The argument filtering Pi contains the following mapping:
permE_in_ga(x1, x2)  =  permE_in_ga(x1)
nil  =  nil
permE_out_ga(x1, x2)  =  permE_out_ga
cons(x1, x2)  =  cons(x1, x2)
U4_ga(x1, x2, x3, x4)  =  U4_ga(x4)
appendC_in_ga(x1, x2)  =  appendC_in_ga(x1)
appendC_out_ga(x1, x2)  =  appendC_out_ga(x2)
U5_ga(x1, x2, x3, x4)  =  U5_ga(x4)
U6_ga(x1, x2, x3, x4)  =  U6_ga(x4)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
splitA_in_gaaa(x1, x2, x3, x4)  =  splitA_in_gaaa(x1)
splitA_out_gaaa(x1, x2, x3, x4)  =  splitA_out_gaaa(x2, x3, x4)
U1_gaaa(x1, x2, x3, x4, x5, x6)  =  U1_gaaa(x1, x6)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x1, x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x5)
appendD_in_ggga(x1, x2, x3, x4)  =  appendD_in_ggga(x1, x2, x3)
U3_ggga(x1, x2, x3, x4, x5)  =  U3_ggga(x1, x5)
appendB_in_gga(x1, x2, x3)  =  appendB_in_gga(x1, x2)
appendB_out_gga(x1, x2, x3)  =  appendB_out_gga(x3)
U2_gga(x1, x2, x3, x4, x5)  =  U2_gga(x1, x5)
appendD_out_ggga(x1, x2, x3, x4)  =  appendD_out_ggga(x4)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x5)
U11_ga(x1, x2, x3, x4, x5)  =  U11_ga(x5)
PERME_IN_GA(x1, x2)  =  PERME_IN_GA(x1)
U4_GA(x1, x2, x3, x4)  =  U4_GA(x4)
APPENDC_IN_GA(x1, x2)  =  APPENDC_IN_GA(x1)
U5_GA(x1, x2, x3, x4)  =  U5_GA(x4)
U6_GA(x1, x2, x3, x4)  =  U6_GA(x4)
U7_GA(x1, x2, x3, x4, x5)  =  U7_GA(x5)
SPLITA_IN_GAAA(x1, x2, x3, x4)  =  SPLITA_IN_GAAA(x1)
U1_GAAA(x1, x2, x3, x4, x5, x6)  =  U1_GAAA(x1, x6)
U8_GA(x1, x2, x3, x4, x5)  =  U8_GA(x1, x5)
U9_GA(x1, x2, x3, x4, x5)  =  U9_GA(x5)
APPENDD_IN_GGGA(x1, x2, x3, x4)  =  APPENDD_IN_GGGA(x1, x2, x3)
U3_GGGA(x1, x2, x3, x4, x5)  =  U3_GGGA(x1, x5)
APPENDB_IN_GGA(x1, x2, x3)  =  APPENDB_IN_GGA(x1, x2)
U2_GGA(x1, x2, x3, x4, x5)  =  U2_GGA(x1, x5)
U10_GA(x1, x2, x3, x4, x5)  =  U10_GA(x5)
U11_GA(x1, x2, x3, x4, x5)  =  U11_GA(x5)

We have to consider all (P,R,Pi)-chains

(7) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LOPSTR] contains 3 SCCs with 12 less nodes.

(8) Complex Obligation (AND)

(9) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

APPENDB_IN_GGA(cons(T123, T124), T125, cons(T123, X130)) → APPENDB_IN_GGA(T124, T125, X130)

The TRS R consists of the following rules:

permE_in_ga(nil, nil) → permE_out_ga(nil, nil)
permE_in_ga(cons(T30, T31), cons(T30, T32)) → U4_ga(T30, T31, T32, appendC_in_ga(T31, X23))
appendC_in_ga(T40, T40) → appendC_out_ga(T40, T40)
U4_ga(T30, T31, T32, appendC_out_ga(T31, X23)) → permE_out_ga(cons(T30, T31), cons(T30, T32))
permE_in_ga(cons(T30, T31), cons(T30, T32)) → U5_ga(T30, T31, T32, appendC_in_ga(T31, T34))
U5_ga(T30, T31, T32, appendC_out_ga(T31, T34)) → U6_ga(T30, T31, T32, permE_in_ga(T34, T32))
permE_in_ga(cons(T47, T48), cons(T50, T51)) → U7_ga(T47, T48, T50, T51, splitA_in_gaaa(T48, X56, T50, X57))
splitA_in_gaaa(cons(T80, T81), nil, T80, T81) → splitA_out_gaaa(cons(T80, T81), nil, T80, T81)
splitA_in_gaaa(cons(T88, T89), cons(T88, X83), T91, X84) → U1_gaaa(T88, T89, X83, T91, X84, splitA_in_gaaa(T89, X83, T91, X84))
U1_gaaa(T88, T89, X83, T91, X84, splitA_out_gaaa(T89, X83, T91, X84)) → splitA_out_gaaa(cons(T88, T89), cons(T88, X83), T91, X84)
U7_ga(T47, T48, T50, T51, splitA_out_gaaa(T48, X56, T50, X57)) → permE_out_ga(cons(T47, T48), cons(T50, T51))
permE_in_ga(cons(T47, T48), cons(T50, T60)) → U8_ga(T47, T48, T50, T60, splitA_in_gaaa(T48, T58, T50, T59))
U8_ga(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U9_ga(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, X23))
appendD_in_ggga(T107, T108, T109, cons(T107, X108)) → U3_ggga(T107, T108, T109, X108, appendB_in_gga(T108, T109, X108))
appendB_in_gga(nil, T116, T116) → appendB_out_gga(nil, T116, T116)
appendB_in_gga(cons(T123, T124), T125, cons(T123, X130)) → U2_gga(T123, T124, T125, X130, appendB_in_gga(T124, T125, X130))
U2_gga(T123, T124, T125, X130, appendB_out_gga(T124, T125, X130)) → appendB_out_gga(cons(T123, T124), T125, cons(T123, X130))
U3_ggga(T107, T108, T109, X108, appendB_out_gga(T108, T109, X108)) → appendD_out_ggga(T107, T108, T109, cons(T107, X108))
U9_ga(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, X23)) → permE_out_ga(cons(T47, T48), cons(T50, T60))
U8_ga(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U10_ga(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, T98))
U10_ga(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, T98)) → U11_ga(T47, T48, T50, T60, permE_in_ga(T98, T60))
U11_ga(T47, T48, T50, T60, permE_out_ga(T98, T60)) → permE_out_ga(cons(T47, T48), cons(T50, T60))
U6_ga(T30, T31, T32, permE_out_ga(T34, T32)) → permE_out_ga(cons(T30, T31), cons(T30, T32))

The argument filtering Pi contains the following mapping:
permE_in_ga(x1, x2)  =  permE_in_ga(x1)
nil  =  nil
permE_out_ga(x1, x2)  =  permE_out_ga
cons(x1, x2)  =  cons(x1, x2)
U4_ga(x1, x2, x3, x4)  =  U4_ga(x4)
appendC_in_ga(x1, x2)  =  appendC_in_ga(x1)
appendC_out_ga(x1, x2)  =  appendC_out_ga(x2)
U5_ga(x1, x2, x3, x4)  =  U5_ga(x4)
U6_ga(x1, x2, x3, x4)  =  U6_ga(x4)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
splitA_in_gaaa(x1, x2, x3, x4)  =  splitA_in_gaaa(x1)
splitA_out_gaaa(x1, x2, x3, x4)  =  splitA_out_gaaa(x2, x3, x4)
U1_gaaa(x1, x2, x3, x4, x5, x6)  =  U1_gaaa(x1, x6)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x1, x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x5)
appendD_in_ggga(x1, x2, x3, x4)  =  appendD_in_ggga(x1, x2, x3)
U3_ggga(x1, x2, x3, x4, x5)  =  U3_ggga(x1, x5)
appendB_in_gga(x1, x2, x3)  =  appendB_in_gga(x1, x2)
appendB_out_gga(x1, x2, x3)  =  appendB_out_gga(x3)
U2_gga(x1, x2, x3, x4, x5)  =  U2_gga(x1, x5)
appendD_out_ggga(x1, x2, x3, x4)  =  appendD_out_ggga(x4)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x5)
U11_ga(x1, x2, x3, x4, x5)  =  U11_ga(x5)
APPENDB_IN_GGA(x1, x2, x3)  =  APPENDB_IN_GGA(x1, x2)

We have to consider all (P,R,Pi)-chains

(10) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(11) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

APPENDB_IN_GGA(cons(T123, T124), T125, cons(T123, X130)) → APPENDB_IN_GGA(T124, T125, X130)

R is empty.
The argument filtering Pi contains the following mapping:
cons(x1, x2)  =  cons(x1, x2)
APPENDB_IN_GGA(x1, x2, x3)  =  APPENDB_IN_GGA(x1, x2)

We have to consider all (P,R,Pi)-chains

(12) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(13) Obligation:

Q DP problem:
The TRS P consists of the following rules:

APPENDB_IN_GGA(cons(T123, T124), T125) → APPENDB_IN_GGA(T124, T125)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.

(14) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • APPENDB_IN_GGA(cons(T123, T124), T125) → APPENDB_IN_GGA(T124, T125)
    The graph contains the following edges 1 > 1, 2 >= 2

(15) YES

(16) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

SPLITA_IN_GAAA(cons(T88, T89), cons(T88, X83), T91, X84) → SPLITA_IN_GAAA(T89, X83, T91, X84)

The TRS R consists of the following rules:

permE_in_ga(nil, nil) → permE_out_ga(nil, nil)
permE_in_ga(cons(T30, T31), cons(T30, T32)) → U4_ga(T30, T31, T32, appendC_in_ga(T31, X23))
appendC_in_ga(T40, T40) → appendC_out_ga(T40, T40)
U4_ga(T30, T31, T32, appendC_out_ga(T31, X23)) → permE_out_ga(cons(T30, T31), cons(T30, T32))
permE_in_ga(cons(T30, T31), cons(T30, T32)) → U5_ga(T30, T31, T32, appendC_in_ga(T31, T34))
U5_ga(T30, T31, T32, appendC_out_ga(T31, T34)) → U6_ga(T30, T31, T32, permE_in_ga(T34, T32))
permE_in_ga(cons(T47, T48), cons(T50, T51)) → U7_ga(T47, T48, T50, T51, splitA_in_gaaa(T48, X56, T50, X57))
splitA_in_gaaa(cons(T80, T81), nil, T80, T81) → splitA_out_gaaa(cons(T80, T81), nil, T80, T81)
splitA_in_gaaa(cons(T88, T89), cons(T88, X83), T91, X84) → U1_gaaa(T88, T89, X83, T91, X84, splitA_in_gaaa(T89, X83, T91, X84))
U1_gaaa(T88, T89, X83, T91, X84, splitA_out_gaaa(T89, X83, T91, X84)) → splitA_out_gaaa(cons(T88, T89), cons(T88, X83), T91, X84)
U7_ga(T47, T48, T50, T51, splitA_out_gaaa(T48, X56, T50, X57)) → permE_out_ga(cons(T47, T48), cons(T50, T51))
permE_in_ga(cons(T47, T48), cons(T50, T60)) → U8_ga(T47, T48, T50, T60, splitA_in_gaaa(T48, T58, T50, T59))
U8_ga(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U9_ga(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, X23))
appendD_in_ggga(T107, T108, T109, cons(T107, X108)) → U3_ggga(T107, T108, T109, X108, appendB_in_gga(T108, T109, X108))
appendB_in_gga(nil, T116, T116) → appendB_out_gga(nil, T116, T116)
appendB_in_gga(cons(T123, T124), T125, cons(T123, X130)) → U2_gga(T123, T124, T125, X130, appendB_in_gga(T124, T125, X130))
U2_gga(T123, T124, T125, X130, appendB_out_gga(T124, T125, X130)) → appendB_out_gga(cons(T123, T124), T125, cons(T123, X130))
U3_ggga(T107, T108, T109, X108, appendB_out_gga(T108, T109, X108)) → appendD_out_ggga(T107, T108, T109, cons(T107, X108))
U9_ga(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, X23)) → permE_out_ga(cons(T47, T48), cons(T50, T60))
U8_ga(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U10_ga(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, T98))
U10_ga(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, T98)) → U11_ga(T47, T48, T50, T60, permE_in_ga(T98, T60))
U11_ga(T47, T48, T50, T60, permE_out_ga(T98, T60)) → permE_out_ga(cons(T47, T48), cons(T50, T60))
U6_ga(T30, T31, T32, permE_out_ga(T34, T32)) → permE_out_ga(cons(T30, T31), cons(T30, T32))

The argument filtering Pi contains the following mapping:
permE_in_ga(x1, x2)  =  permE_in_ga(x1)
nil  =  nil
permE_out_ga(x1, x2)  =  permE_out_ga
cons(x1, x2)  =  cons(x1, x2)
U4_ga(x1, x2, x3, x4)  =  U4_ga(x4)
appendC_in_ga(x1, x2)  =  appendC_in_ga(x1)
appendC_out_ga(x1, x2)  =  appendC_out_ga(x2)
U5_ga(x1, x2, x3, x4)  =  U5_ga(x4)
U6_ga(x1, x2, x3, x4)  =  U6_ga(x4)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
splitA_in_gaaa(x1, x2, x3, x4)  =  splitA_in_gaaa(x1)
splitA_out_gaaa(x1, x2, x3, x4)  =  splitA_out_gaaa(x2, x3, x4)
U1_gaaa(x1, x2, x3, x4, x5, x6)  =  U1_gaaa(x1, x6)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x1, x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x5)
appendD_in_ggga(x1, x2, x3, x4)  =  appendD_in_ggga(x1, x2, x3)
U3_ggga(x1, x2, x3, x4, x5)  =  U3_ggga(x1, x5)
appendB_in_gga(x1, x2, x3)  =  appendB_in_gga(x1, x2)
appendB_out_gga(x1, x2, x3)  =  appendB_out_gga(x3)
U2_gga(x1, x2, x3, x4, x5)  =  U2_gga(x1, x5)
appendD_out_ggga(x1, x2, x3, x4)  =  appendD_out_ggga(x4)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x5)
U11_ga(x1, x2, x3, x4, x5)  =  U11_ga(x5)
SPLITA_IN_GAAA(x1, x2, x3, x4)  =  SPLITA_IN_GAAA(x1)

We have to consider all (P,R,Pi)-chains

(17) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(18) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

SPLITA_IN_GAAA(cons(T88, T89), cons(T88, X83), T91, X84) → SPLITA_IN_GAAA(T89, X83, T91, X84)

R is empty.
The argument filtering Pi contains the following mapping:
cons(x1, x2)  =  cons(x1, x2)
SPLITA_IN_GAAA(x1, x2, x3, x4)  =  SPLITA_IN_GAAA(x1)

We have to consider all (P,R,Pi)-chains

(19) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(20) Obligation:

Q DP problem:
The TRS P consists of the following rules:

SPLITA_IN_GAAA(cons(T88, T89)) → SPLITA_IN_GAAA(T89)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.

(21) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • SPLITA_IN_GAAA(cons(T88, T89)) → SPLITA_IN_GAAA(T89)
    The graph contains the following edges 1 > 1

(22) YES

(23) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

PERME_IN_GA(cons(T30, T31), cons(T30, T32)) → U5_GA(T30, T31, T32, appendC_in_ga(T31, T34))
U5_GA(T30, T31, T32, appendC_out_ga(T31, T34)) → PERME_IN_GA(T34, T32)
PERME_IN_GA(cons(T47, T48), cons(T50, T60)) → U8_GA(T47, T48, T50, T60, splitA_in_gaaa(T48, T58, T50, T59))
U8_GA(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U10_GA(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, T98))
U10_GA(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, T98)) → PERME_IN_GA(T98, T60)

The TRS R consists of the following rules:

permE_in_ga(nil, nil) → permE_out_ga(nil, nil)
permE_in_ga(cons(T30, T31), cons(T30, T32)) → U4_ga(T30, T31, T32, appendC_in_ga(T31, X23))
appendC_in_ga(T40, T40) → appendC_out_ga(T40, T40)
U4_ga(T30, T31, T32, appendC_out_ga(T31, X23)) → permE_out_ga(cons(T30, T31), cons(T30, T32))
permE_in_ga(cons(T30, T31), cons(T30, T32)) → U5_ga(T30, T31, T32, appendC_in_ga(T31, T34))
U5_ga(T30, T31, T32, appendC_out_ga(T31, T34)) → U6_ga(T30, T31, T32, permE_in_ga(T34, T32))
permE_in_ga(cons(T47, T48), cons(T50, T51)) → U7_ga(T47, T48, T50, T51, splitA_in_gaaa(T48, X56, T50, X57))
splitA_in_gaaa(cons(T80, T81), nil, T80, T81) → splitA_out_gaaa(cons(T80, T81), nil, T80, T81)
splitA_in_gaaa(cons(T88, T89), cons(T88, X83), T91, X84) → U1_gaaa(T88, T89, X83, T91, X84, splitA_in_gaaa(T89, X83, T91, X84))
U1_gaaa(T88, T89, X83, T91, X84, splitA_out_gaaa(T89, X83, T91, X84)) → splitA_out_gaaa(cons(T88, T89), cons(T88, X83), T91, X84)
U7_ga(T47, T48, T50, T51, splitA_out_gaaa(T48, X56, T50, X57)) → permE_out_ga(cons(T47, T48), cons(T50, T51))
permE_in_ga(cons(T47, T48), cons(T50, T60)) → U8_ga(T47, T48, T50, T60, splitA_in_gaaa(T48, T58, T50, T59))
U8_ga(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U9_ga(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, X23))
appendD_in_ggga(T107, T108, T109, cons(T107, X108)) → U3_ggga(T107, T108, T109, X108, appendB_in_gga(T108, T109, X108))
appendB_in_gga(nil, T116, T116) → appendB_out_gga(nil, T116, T116)
appendB_in_gga(cons(T123, T124), T125, cons(T123, X130)) → U2_gga(T123, T124, T125, X130, appendB_in_gga(T124, T125, X130))
U2_gga(T123, T124, T125, X130, appendB_out_gga(T124, T125, X130)) → appendB_out_gga(cons(T123, T124), T125, cons(T123, X130))
U3_ggga(T107, T108, T109, X108, appendB_out_gga(T108, T109, X108)) → appendD_out_ggga(T107, T108, T109, cons(T107, X108))
U9_ga(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, X23)) → permE_out_ga(cons(T47, T48), cons(T50, T60))
U8_ga(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U10_ga(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, T98))
U10_ga(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, T98)) → U11_ga(T47, T48, T50, T60, permE_in_ga(T98, T60))
U11_ga(T47, T48, T50, T60, permE_out_ga(T98, T60)) → permE_out_ga(cons(T47, T48), cons(T50, T60))
U6_ga(T30, T31, T32, permE_out_ga(T34, T32)) → permE_out_ga(cons(T30, T31), cons(T30, T32))

The argument filtering Pi contains the following mapping:
permE_in_ga(x1, x2)  =  permE_in_ga(x1)
nil  =  nil
permE_out_ga(x1, x2)  =  permE_out_ga
cons(x1, x2)  =  cons(x1, x2)
U4_ga(x1, x2, x3, x4)  =  U4_ga(x4)
appendC_in_ga(x1, x2)  =  appendC_in_ga(x1)
appendC_out_ga(x1, x2)  =  appendC_out_ga(x2)
U5_ga(x1, x2, x3, x4)  =  U5_ga(x4)
U6_ga(x1, x2, x3, x4)  =  U6_ga(x4)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
splitA_in_gaaa(x1, x2, x3, x4)  =  splitA_in_gaaa(x1)
splitA_out_gaaa(x1, x2, x3, x4)  =  splitA_out_gaaa(x2, x3, x4)
U1_gaaa(x1, x2, x3, x4, x5, x6)  =  U1_gaaa(x1, x6)
U8_ga(x1, x2, x3, x4, x5)  =  U8_ga(x1, x5)
U9_ga(x1, x2, x3, x4, x5)  =  U9_ga(x5)
appendD_in_ggga(x1, x2, x3, x4)  =  appendD_in_ggga(x1, x2, x3)
U3_ggga(x1, x2, x3, x4, x5)  =  U3_ggga(x1, x5)
appendB_in_gga(x1, x2, x3)  =  appendB_in_gga(x1, x2)
appendB_out_gga(x1, x2, x3)  =  appendB_out_gga(x3)
U2_gga(x1, x2, x3, x4, x5)  =  U2_gga(x1, x5)
appendD_out_ggga(x1, x2, x3, x4)  =  appendD_out_ggga(x4)
U10_ga(x1, x2, x3, x4, x5)  =  U10_ga(x5)
U11_ga(x1, x2, x3, x4, x5)  =  U11_ga(x5)
PERME_IN_GA(x1, x2)  =  PERME_IN_GA(x1)
U5_GA(x1, x2, x3, x4)  =  U5_GA(x4)
U8_GA(x1, x2, x3, x4, x5)  =  U8_GA(x1, x5)
U10_GA(x1, x2, x3, x4, x5)  =  U10_GA(x5)

We have to consider all (P,R,Pi)-chains

(24) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(25) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

PERME_IN_GA(cons(T30, T31), cons(T30, T32)) → U5_GA(T30, T31, T32, appendC_in_ga(T31, T34))
U5_GA(T30, T31, T32, appendC_out_ga(T31, T34)) → PERME_IN_GA(T34, T32)
PERME_IN_GA(cons(T47, T48), cons(T50, T60)) → U8_GA(T47, T48, T50, T60, splitA_in_gaaa(T48, T58, T50, T59))
U8_GA(T47, T48, T50, T60, splitA_out_gaaa(T48, T58, T50, T59)) → U10_GA(T47, T48, T50, T60, appendD_in_ggga(T47, T58, T59, T98))
U10_GA(T47, T48, T50, T60, appendD_out_ggga(T47, T58, T59, T98)) → PERME_IN_GA(T98, T60)

The TRS R consists of the following rules:

appendC_in_ga(T40, T40) → appendC_out_ga(T40, T40)
splitA_in_gaaa(cons(T80, T81), nil, T80, T81) → splitA_out_gaaa(cons(T80, T81), nil, T80, T81)
splitA_in_gaaa(cons(T88, T89), cons(T88, X83), T91, X84) → U1_gaaa(T88, T89, X83, T91, X84, splitA_in_gaaa(T89, X83, T91, X84))
appendD_in_ggga(T107, T108, T109, cons(T107, X108)) → U3_ggga(T107, T108, T109, X108, appendB_in_gga(T108, T109, X108))
U1_gaaa(T88, T89, X83, T91, X84, splitA_out_gaaa(T89, X83, T91, X84)) → splitA_out_gaaa(cons(T88, T89), cons(T88, X83), T91, X84)
U3_ggga(T107, T108, T109, X108, appendB_out_gga(T108, T109, X108)) → appendD_out_ggga(T107, T108, T109, cons(T107, X108))
appendB_in_gga(nil, T116, T116) → appendB_out_gga(nil, T116, T116)
appendB_in_gga(cons(T123, T124), T125, cons(T123, X130)) → U2_gga(T123, T124, T125, X130, appendB_in_gga(T124, T125, X130))
U2_gga(T123, T124, T125, X130, appendB_out_gga(T124, T125, X130)) → appendB_out_gga(cons(T123, T124), T125, cons(T123, X130))

The argument filtering Pi contains the following mapping:
nil  =  nil
cons(x1, x2)  =  cons(x1, x2)
appendC_in_ga(x1, x2)  =  appendC_in_ga(x1)
appendC_out_ga(x1, x2)  =  appendC_out_ga(x2)
splitA_in_gaaa(x1, x2, x3, x4)  =  splitA_in_gaaa(x1)
splitA_out_gaaa(x1, x2, x3, x4)  =  splitA_out_gaaa(x2, x3, x4)
U1_gaaa(x1, x2, x3, x4, x5, x6)  =  U1_gaaa(x1, x6)
appendD_in_ggga(x1, x2, x3, x4)  =  appendD_in_ggga(x1, x2, x3)
U3_ggga(x1, x2, x3, x4, x5)  =  U3_ggga(x1, x5)
appendB_in_gga(x1, x2, x3)  =  appendB_in_gga(x1, x2)
appendB_out_gga(x1, x2, x3)  =  appendB_out_gga(x3)
U2_gga(x1, x2, x3, x4, x5)  =  U2_gga(x1, x5)
appendD_out_ggga(x1, x2, x3, x4)  =  appendD_out_ggga(x4)
PERME_IN_GA(x1, x2)  =  PERME_IN_GA(x1)
U5_GA(x1, x2, x3, x4)  =  U5_GA(x4)
U8_GA(x1, x2, x3, x4, x5)  =  U8_GA(x1, x5)
U10_GA(x1, x2, x3, x4, x5)  =  U10_GA(x5)

We have to consider all (P,R,Pi)-chains

(26) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(27) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PERME_IN_GA(cons(T30, T31)) → U5_GA(appendC_in_ga(T31))
U5_GA(appendC_out_ga(T34)) → PERME_IN_GA(T34)
PERME_IN_GA(cons(T47, T48)) → U8_GA(T47, splitA_in_gaaa(T48))
U8_GA(T47, splitA_out_gaaa(T58, T50, T59)) → U10_GA(appendD_in_ggga(T47, T58, T59))
U10_GA(appendD_out_ggga(T98)) → PERME_IN_GA(T98)

The TRS R consists of the following rules:

appendC_in_ga(T40) → appendC_out_ga(T40)
splitA_in_gaaa(cons(T80, T81)) → splitA_out_gaaa(nil, T80, T81)
splitA_in_gaaa(cons(T88, T89)) → U1_gaaa(T88, splitA_in_gaaa(T89))
appendD_in_ggga(T107, T108, T109) → U3_ggga(T107, appendB_in_gga(T108, T109))
U1_gaaa(T88, splitA_out_gaaa(X83, T91, X84)) → splitA_out_gaaa(cons(T88, X83), T91, X84)
U3_ggga(T107, appendB_out_gga(X108)) → appendD_out_ggga(cons(T107, X108))
appendB_in_gga(nil, T116) → appendB_out_gga(T116)
appendB_in_gga(cons(T123, T124), T125) → U2_gga(T123, appendB_in_gga(T124, T125))
U2_gga(T123, appendB_out_gga(X130)) → appendB_out_gga(cons(T123, X130))

The set Q consists of the following terms:

appendC_in_ga(x0)
splitA_in_gaaa(x0)
appendD_in_ggga(x0, x1, x2)
U1_gaaa(x0, x1)
U3_ggga(x0, x1)
appendB_in_gga(x0, x1)
U2_gga(x0, x1)

We have to consider all (P,Q,R)-chains.

(28) MRRProof (EQUIVALENT transformation)

By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented.
Strictly oriented dependency pairs:

PERME_IN_GA(cons(T30, T31)) → U5_GA(appendC_in_ga(T31))
U5_GA(appendC_out_ga(T34)) → PERME_IN_GA(T34)
PERME_IN_GA(cons(T47, T48)) → U8_GA(T47, splitA_in_gaaa(T48))
U8_GA(T47, splitA_out_gaaa(T58, T50, T59)) → U10_GA(appendD_in_ggga(T47, T58, T59))
U10_GA(appendD_out_ggga(T98)) → PERME_IN_GA(T98)

Strictly oriented rules of the TRS R:

appendC_in_ga(T40) → appendC_out_ga(T40)
splitA_in_gaaa(cons(T80, T81)) → splitA_out_gaaa(nil, T80, T81)
splitA_in_gaaa(cons(T88, T89)) → U1_gaaa(T88, splitA_in_gaaa(T89))
appendD_in_ggga(T107, T108, T109) → U3_ggga(T107, appendB_in_gga(T108, T109))
U1_gaaa(T88, splitA_out_gaaa(X83, T91, X84)) → splitA_out_gaaa(cons(T88, X83), T91, X84)
U3_ggga(T107, appendB_out_gga(X108)) → appendD_out_ggga(cons(T107, X108))
appendB_in_gga(nil, T116) → appendB_out_gga(T116)
appendB_in_gga(cons(T123, T124), T125) → U2_gga(T123, appendB_in_gga(T124, T125))
U2_gga(T123, appendB_out_gga(X130)) → appendB_out_gga(cons(T123, X130))

Used ordering: Knuth-Bendix order [KBO] with precedence:
U10GA1 > appendDinggga3 > splitAingaaa1 > appendCoutga1 > cons2 > U5GA1 > PERMEINGA1 > U1gaaa2 > U8GA2 > appendBingga2 > U2gga2 > U3ggga2 > appendDoutggga1 > appendBoutgga1 > nil > splitAoutgaaa3 > appendCinga1

and weight map:

nil=4
appendC_in_ga_1=3
appendC_out_ga_1=2
splitA_in_gaaa_1=3
appendB_out_gga_1=4
appendD_out_ggga_1=3
PERME_IN_GA_1=3
U5_GA_1=1
U10_GA_1=1
cons_2=1
splitA_out_gaaa_3=0
U1_gaaa_2=1
appendD_in_ggga_3=0
U3_ggga_2=0
appendB_in_gga_2=0
U2_gga_2=1
U8_GA_2=1

The variable weight is 1

(29) Obligation:

Q DP problem:
P is empty.
R is empty.
The set Q consists of the following terms:

appendC_in_ga(x0)
splitA_in_gaaa(x0)
appendD_in_ggga(x0, x1, x2)
U1_gaaa(x0, x1)
U3_ggga(x0, x1)
appendB_in_gga(x0, x1)
U2_gga(x0, x1)

We have to consider all (P,Q,R)-chains.

(30) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(31) YES